package respuzzle;

import puzzle.Puzzle;
import espest.Operador;
import espest.Transicao;

public class OperadorMover extends Operador<EstadoPuzzle>{

	private Puzzle.Movimento movimento;
	public OperadorMover(Puzzle.Movimento mov){
		movimento = mov;
	}
	
	@Override
	public Transicao<EstadoPuzzle> transitar(EstadoPuzzle estado) {
		Puzzle novoPuzzle = estado.getInfo().movimentar(movimento);
		if(novoPuzzle!=null)
			return new Transicao<EstadoPuzzle>(estado, new EstadoPuzzle(novoPuzzle), this, 1);
		else
			return null;
	}

}
